맨위로가기

GNU 컴파일러 모음

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 시작하여 개발된 자유 소프트웨어 컴파일러 모음이다. 1985년에 개발이 시작되어 1987년에 처음 공개되었으며, C, C++, Objective-C, Fortran, Ada 등 다양한 프로그래밍 언어를 지원한다. GCC는 초기에는 파스칼로 작성되었으나 C 언어로 다시 작성되었고, EGCS 프로젝트를 거쳐 현재는 전 세계 개발자들에 의해 유지 관리되고 있다. GCC는 다양한 아키텍처를 지원하며, 링크 타임 최적화, 플러그인, C++ 트랜잭션 메모리, 유니코드 식별자 등 다양한 기능을 제공한다.

더 읽어볼만한 페이지

  • 포트란 컴파일러 - MinGW
    MinGW는 윈도우에서 GNU 툴체인을 사용할 수 있게 해주는 프로젝트이며, MSYS를 통해 유닉스 셸 환경을 제공하고, C, C++, Objective-C 등 다양한 언어를 지원하며 윈도우 API를 직접 호출하여 호환성 계층 DLL을 요구하지 않는다.
  • 파스칼 컴파일러 - 터보 파스칼
    필립 칸이 개발하고 안데르스 헤일스베르그가 기반을 다진 터보 파스칼은 저렴한 가격, 빠른 컴파일, 사용하기 쉬운 IDE를 특징으로 1980년대 PC 프로그래밍에 혁신을 가져왔으며, 여러 기능 추가를 거쳐 델파이 등장 후 레거시 기술이 되었고 일부 버전은 프리웨어로 배포된다.
  • 파스칼 컴파일러 - 델파이
    델파이는 앤더스 헤일스베르그가 개발한 파스칼 기반의 객체 지향 프로그래밍 언어이자 다양한 플랫폼을 지원하며 빠른 애플리케이션 개발을 돕는 RAD 개발 환경이다.
  • C++ 컴파일러 - C++빌더
    C++빌더는 델파이와 동일한 IDE를 사용하는 엠바카데로 테크놀로지스에서 개발한 C++ 통합 개발 환경이며, 윈도우, macOS, iOS, 안드로이드 등 다양한 플랫폼을 지원하고 VCL, FireMonkey, CLX와 같은 GUI 라이브러리를 제공한다.
  • C++ 컴파일러 - MinGW
    MinGW는 윈도우에서 GNU 툴체인을 사용할 수 있게 해주는 프로젝트이며, MSYS를 통해 유닉스 셸 환경을 제공하고, C, C++, Objective-C 등 다양한 언어를 지원하며 윈도우 API를 직접 호출하여 호환성 계층 DLL을 요구하지 않는다.
GNU 컴파일러 모음 - [IT 관련 정보]에 관한 문서
일반 정보
로고
GCC 10.2 GNU Compiler Collection 자체 컴파일 스크린샷
개발자GNU 프로젝트
출시일1987년 3월 22일
최신 릴리스 버전13.2
최신 릴리스 날짜2023년 7월 27일
최신 미리보기 버전해당 정보 없음
최신 미리보기 날짜해당 정보 없음
프로그래밍 언어C
C++
운영 체제크로스 플랫폼
플랫폼GNU 및 기타 다수
크기~1500만 라인
언어영어
종류컴파일러
라이선스GPLv3+ (GCC 런타임 라이브러리 예외 포함)
웹사이트GNU Compiler Collection 공식 웹사이트
기타 지원 정보
GCC RustGCC Rust
지원하는 프로그래밍 언어GCC에서 지원하는 프로그래밍 언어
GCC 6 릴리스 시리즈 변경 사항GCC 6 릴리스 시리즈 — 변경 사항, 새로운 기능 및 수정 사항 - GNU 프로젝트
OpenACCOpenACC - GCC Wiki
LLVM 컴파일러 인프라 프로젝트LLVM 컴파일러 인프라 프로젝트
Apple의 GPLv3 제거Apple의 GPLv3 제거
Clang을 사용하는 이유Clang을 사용하는 이유
2007년 8월 29일: FreeBSD Foundation 뉴스레터2007년 8월 29일: FreeBSD Foundation 뉴스레터, 2007년 8월 29일
GCC 설치: 바이너리GCC 설치: 바이너리 - GNU 프로젝트 - Free Software Foundation (FSF)

2. 역사

GCC는 리처드 스톨만이 1987년 GNU 프로젝트의 컴파일러로 작성했으며, 자유 소프트웨어 재단이 이 개발을 후원했다.[89] 1997년 개발 과정이 공개되었고, 1999년 첫 버전이 나왔다. GCC는 전 세계적으로 관리되고 있으며 다양한 중앙 처리 장치를 처리할 수 있게 되었다.

GCC는 GNU 시스템의 공식 컴파일러이며, 많은 컴파일러와 운영 체제를 만드는 데 사용되었다. GCC를 사용하면 시스템 네이티브 컴파일러를 사용했을 때보다 이식성을 향상시킬 수 있는데, 이는 같은 파서로 코드를 처리하기 때문이다. GCC는 초기에는 상용 컴파일러에 비해 느린 코드를 생성했지만, 최근에는 많이 개선되었다.

1985년, 당시 매사추세츠 공과대학교(MIT)의 연구자였던 리처드 스톨만은 기존 컴파일러를 확장하는 형태로 개발을 시작했다. 초기 컴파일러는 파스칼 방언으로 작성되었다. 이후 스톨먼과 레너드 H. 타워 주니어에 의해 C 언어로 다시 작성되었고, GNU 프로젝트의 하나로 1987년에 공개되었다. 2012년에는 로렌스 크라울과 디에고 노빌로에 의해 C++로 다시 작성되었다.

2. 1. 개발 초기

1983년 말, 리처드 스톨만은 GNU 운영 체제 개발을 위해 암스테르담 컴파일러 키트를 사용하려 했으나, 저작권 문제로 인해 새로운 컴파일러를 개발하기로 결정했다.[14] 초기에는 로렌스 리버모어 국립 연구소의 컴파일러를 기반으로 C 프론트 엔드를 개발했으나, 68000 유닉스 시스템의 메모리 제약(64KB)으로 인해 처음부터 새로운 컴파일러를 개발해야 했다.[15]

1987년 3월 22일, GCC가 처음 출시되었으며, FTP를 통해 MIT에서 사용할 수 있었다.[18] 스톨만 외에도 렌 타워, 잭 데이비슨, 크리스토퍼 W. 프레이저, 폴 루빈 등 여러 개발자들이 GCC 개발에 기여했다.[19] GCC는 GNU Emacs와 함께 GNU 프로젝트의 핵심 요소로 간주되었으며, 1990년에는 여러 컴퓨터 아키텍처를 지원하고 상용 컴파일러보다 뛰어난 성능을 제공하며 상업적으로도 사용되었다.[21]

2. 2. EGCS 프로젝트

GCC는 GPL (GNU 일반 공중 사용 허가서)로 라이선스가 부여되었기 때문에, C 이외의 언어 인터페이스를 작성하는 등의 작업을 하려는 프로그래머들은 GPL 조건을 충족해야 했다. 즉, 소스 코드를 배포해야 한다는 요구사항을 포함하여 컴파일러를 포크하여 자유롭게 개발할 수 있었다.[22] 그러나 여러 개의 포크는 비효율적이고 다루기 어려웠으며, 공식 GCC 프로젝트는 새로운 기능보다 안정성을 우선시했기 때문에 많은 사람들이 좌절감을 느꼈다.[22]

이러한 배경에서 1997년, 개발자 그룹은 여러 실험적인 포크를 단일 프로젝트로 병합하기 위해 ''Experimental/Enhanced GNU Compiler System (EGCS)''를 결성했다.[22][17] EGCS는 GCC의 개발 스냅샷 (2.7.2 릴리스 전후, 이후 2.8.1 릴리스까지 이어짐)을 기반으로 g77 (포트란), PGCC (P5 펜티엄 최적화 GCC)[17], 많은 C++ 개선 사항, 그리고 많은 새로운 아키텍처와 운영 체제 변형을 포함했다.[23]

EGCS 개발이 훨씬 더 활발해지자, 자유 소프트웨어 재단(FSF)은 1999년 4월에 공식적으로 GCC 2.x 컴파일러 개발을 중단하고 EGCS를 GCC의 공식 버전으로 인정했다. 그리고 EGCS 프로젝트를 GCC 유지 관리자로 임명했다. 1999년 7월 GCC 2.95 릴리스와 함께 두 프로젝트는 다시 통합되었다.[24][17]

2. 3. 버전 역사

GCC는 1987년 리처드 스톨만에 의해 GNU 프로젝트의 컴파일러로 처음 작성되었다.[89] 1997년에는 개발 과정이 공개되어 속도가 빨라졌고, 1999년에는 첫 버전이 출시되었다. 현재 GCC는 전 세계적으로 관리되며 다양한 중앙 처리 장치를 지원한다.

GCC의 주요 버전별 출시일과 내용은 다음과 같다.[90]

GCC의 주요 버전[90]
날짜버전내용
1987년 5월 23일1.0리처드 스톨만이 개발한 초기 버전.
1992년 2월 22일2.0
1999년 7월 31일2.951999년 4월의 GCC/EGCS 재통합 이후의 GCC 첫 번째 릴리스이며, 거의 1년 치의 새로운 개발과 버그 수정이 포함됨.
2001년 6월 18일3.0
2002년 5월 15일3.1대부분의 ELF 플랫폼의 기본 디버깅 형식이 DWARF2로 변경.
2002년 8월 14일3.2
2003년 5월 13일3.3
2004년 4월 18일3.4GCC의 구현이 K&R에서 C89로 변경. 새로운 프로시저 간 최적화를 구현.
2005년 4월 20일4.0.0tree ssa 브랜치를 머지. 기존의 RTL 표현보다 높은 수준의 중간 표현을 기반으로 하는 완전히 새로운 최적화 프레임워크를 채용.
2007년 5월 13일4.2.0OpenMP 2.5 지원
2008년 3월 5일4.3.0Intel Core 2와 AMD Geode 프로세서 지원 강화
2009년 4월 21일4.4.0대량의 신기능을 포함한 메이저 릴리스 버전. Graphite 브랜치가 통합되어 새로운 루프 최적화 프레임워크를 채용.
2010년 4월 14일4.5.0C++0x의 실험적 지원 (람다식, 형식 변환 연산자, raw string). 새로운 링크 시 최적화(LTO) 프레임워크 채용.
2011년 3월 25일4.6.0Intel Sandy Bridge 프로세서에 대응 (AVX 확장 명령 세트도 대응)
2012년 3월 22일4.7.0프로시저 간 최적화(IPO) 개선
2013년 3월 22일4.8.0GCC의 구현이 C에서 C++98로 변경되었다. 주소 사니타이저, 스레드 사니타이저가 추가. 새로운 로컬 레지스터 할당자(LRA)가 구현. DWARF4가 기본 디버깅 형식으로.
2014년 4월 22일4.9.0C++14 기능 추가, OpenMP 4.0 지원. 미정의 동작 사니타이저가 추가. 링크 시 최적화 개선.
2015년 4월 22일5.1C의 기본값이 C11의 GNU 확장으로. 미정의 동작 사니타이저의 새로운 옵션. 포인터 경계 체커.
2016년 4월 27일6.1C++14가 기본으로. OpenMP 4.5를 풀 지원. 배열 경계 체커.
2017년 5월 2일7.1C++17의 실험적 지원. 주소 사니타이저의 새로운 옵션.
2018년 5월 2일8.1C17 지원. 에러 메시지 개선.
2019년 5월 3일9.1
2020년 5월 7일10.1C++14와 C++17 간의 ABI의 비호환성이 수정.
2021년 4월 27일11.1GCC의 구현이 C++11로 변경. C++17이 기본으로. DWARF5가 기본 디버깅 형식으로.
2021년 5월 14일8.5
2021년 6월 1일9.4
2021년 6월 28일11.2
2022년 4월 21일11.3
2022년 5월 6일12.1섀도우 콜 스택 사니타이저가 AArch64에 추가.
2022년 5월 9일9.5
2022년 6월 28일10.4
2022년 8월 19일12.2
2023년 4월 26일13.1
2023년 5월 8일12.3AMD Zen 4 프로세서 지원.(-march=znver4)
2023년 5월 29일11.4
2023년 7월 7일10.5
2023년 7월 27일13.2
2024년 5월 6일14.1Rust 프로그래밍 언어 실험적 지원.
2024년 5월 21일13.3
2024년 6월 20일12.4
2024년 7월 19일11.5
2024년 8월 1일14.2


3. 지원 프로그래밍 언어

GCCC, C++, 오브젝티브 C, 오브젝티브 C++, 포트란 (gfortran), 에이다 (GNAT), 고 (gccgo), D (gdc) 등 다양한 프로그래밍 언어를 지원한다.[98][99] 버전 7 이전에는 자바 (gcj)도 지원했다.[87]

표준 릴리즈 외에도 파스칼 (gpc), Modula-2, Modula-3, VHDL (ghdl) 등 다양한 언어를 위한 프론트엔드가 존재한다.[42] OpenMP, OpenACC 등 병렬 프로그래밍 언어 확장도 지원한다.[8]

GCC 5.1부터 C++17 및 C11의 확장 기능을 기본으로 지원하며, C++20 및 C++23에 대한 실험적 지원도 제공한다.[45]

4. 지원 아키텍처

GCC는 매우 다양한 CPU 아키텍처를 지원하며, 주요 프로세서 계열은 다음과 같다:[78]

지원 아키텍처
AArch64
알파
ARM
AVR
블랙핀
eBPF
에피파니 (GCC 4.8)
H8/300
HC12
IA-32 (x86)
IA-64 (인텔 아이테니엄)
MIPS
모토로라 68000
MSP430
Nvidia GPU
Nvidia PTX
PA-RISC
PDP-11
PowerPC
R8C / M16C / M32C
RISC-V
SPARC
SuperH
시스템/390 / z시리즈
VAX
x86-64



표준 릴리즈에서 지원되는 덜 알려진 프로세서는 다음과 같다.

덜 알려진 지원 아키텍처
68HC11
A29K
C6x
CR16
D30V
DSP16xx
ETRAX CRIS
FR-30
FR-V
IBM ROMP
인텔 i960
IP2000
M32R
MCORE
MIL-STD-1750A
MMIX
MN10200
MN10300
모토로라 88000
NS32K
RL78
Stormy16
V850
Xtensa



FSF 버전과 별도로 유지 관리되는 GCC 버전에서 지원하는 추가 프로세서는 다음과 같다.

추가 지원 아키텍처
Cortus APS3
ARC
AVR32
C166 및 C167
D10V
EISC
eSi-RISC
Hexagon[79]
LatticeMico32
LatticeMico8
MeP
MicroBlaze
모토로라 6809
MSP430
NEC SX 아키텍처[80]
Nios II 및 Nios
OpenRISC
PDP-10
PIC24/dsPIC
PIC32
Propeller
새턴 (HP48XGCC)
시스템/370
TIGCC (m68k 변형)
TMS9900
TriCore
Z8000
ZPU



gcj 자바 컴파일러는 순수 기계어 아키텍처나 자바 가상 머신자바 바이트코드만을 대상으로 할 수 있다.[81] 새로운 플랫폼으로 GCC의 대상을 변경할 때에는 부트스트랩(bootstrap)이 자주 쓰인다.

5. GCC의 구조

GCC는 일반적인 컴파일러와 마찬가지로 프론트엔드, 중간 단계(최적화), 백엔드로 구성된다.

GCC는 여러 언어 및 여러 CPU 컴파일러의 전형적인 3단계 아키텍처를 따른다. 모든 프로그램 트리는 "중간 종단"에서 공통 추상 표현으로 변환되어 모든 언어에서 코드 최적화 및 이진 코드 생성 기능을 공유할 수 있다.

  • 프론트엔드: 각 언어별로 존재하며, 소스 코드를 파싱하여 추상 구문 트리를 생성한다.
  • 중간 단계: GENERIC, GIMPLE, RTL 등의 중간 표현을 사용하여 언어 및 아키텍처에 독립적인 최적화를 수행한다.
  • GENERIC: 프론트엔드 언어의 트리 구조를 유지한 공통 중간 형식이다.
  • GIMPLE: GENERIC을 단순화한 형태로, 트리 최적화 및 정적 단일 할당(SSA)을 수행한다.
  • 백엔드: 아키텍처 종속적인 패턴 매칭을 사용하여 기계어를 생성한다.


GCC는 주로 C로 작성되었으며, Ada 프론트 엔드의 일부를 제외한다. 배포판에는 Ada 및 C++의 표준 라이브러리가 포함되어 있으며, 해당 코드는 대부분 해당 언어로 작성되었다.[51] GCC는 빌드에 Perl, Flex, Bison 및 기타 일반적인 도구를 사용하며, GMP, MPC 및 MPFR 라이브러리가 필요하다.[53]

2010년 5월, GCC 운영 위원회는 C++ 컴파일러를 사용하여 GCC를 컴파일하는 것을 허용하기로 결정했다.[54] 2012년 8월에는 GCC가 ISO/IEC C++03 표준을 이해하는 C++ 컴파일러를 필요로 한다고 발표했다.[56] 2020년 5월 18일, GCC는 ISO/IEC C++11 표준으로 이동했다.[57]

5. 1. 프론트엔드

프론트 엔드는 전처리, 어휘 분석, 구문 분석 및 의미 분석으로 구성된다. 컴파일러 프론트 엔드의 목표는 언어 문법과 의미에 따라 후보 프로그램을 수락하거나 거부하고, 오류를 식별하며, 이후 컴파일러 단계에 유효한 프로그램 표현을 처리하는 것이다. 이 예는 C로 작성된 간단한 프로그램에 대해 수행되는 렉서 및 파서 단계를 보여준다.


각 프론트 엔드는 파서를 사용하여 주어진 소스 파일의 추상 구문 트리를 생성한다. 구문 트리 추상화로 인해, 지원되는 다양한 언어의 소스 파일은 동일한 백 엔드에서 처리될 수 있다. GCC는 Bison으로 생성된 LALR 파서를 사용했으나, 2004년 C++용,[58] 2006년 C 및 Objective-C용으로[59] 손으로 작성된 재귀 하강 파서로 점차 전환했다. 2021년 현재 모든 프론트 엔드는 손으로 작성된 재귀 하강 파서를 사용한다.

GCC 4.0까지 프로그램의 트리 표현은 대상 프로세서와 완전히 독립적이지 않았다. 트리의 의미는 서로 다른 언어 프론트 엔드에 따라 다소 달랐으며, 프론트 엔드는 자체 트리 코드를 제공할 수 있었다. 이는 GCC 4.0과 함께 도입된 두 가지 새로운 형태의 언어 독립적 트리인 GENERIC 및 GIMPLE의 도입으로 단순화되었다. GENERIC은 GCC 3.x Java 프론트 엔드의 중간 표현을 기반으로 하여 더 복잡하다. GIMPLE은 여러 구문이 여러 GIMPLE 명령어로 ''낮춰진'' 단순화된 GENERIC이다. C, C++, Java 프론트 엔드는 프론트 엔드에서 직접 GENERIC을 생성한다. 다른 프론트 엔드는 대신 파싱 후 다른 중간 표현을 가지고 이를 GENERIC으로 변환한다.

5. 2. GENERIC 및 GIMPLE

GENERIC은 소스 코드를 실행 파일로 컴파일하는 동안 "중간 단계"로 사용되는 중간 표현 언어이다.[60] GIMPLE은 GCC의 모든 프런트 엔드를 대상으로 하는 GENERIC의 하위 집합이다.

GCC의 중간 단계는 컴파일된 언어와 대상 아키텍처에 독립적으로 작동하며 코드 분석과 최적화를 수행한다. GENERIC[60] 표현에서 시작하여 레지스터 전송 언어(RTL)로 확장한다. GENERIC 표현은 중간 단계에 의해 최적화된 명령형 컴퓨터 프로그래밍 구조의 하위 집합만 포함한다.

소스 코드를 GIMPLE로 변환할 때,[61] 복잡한 표현식은 임시 변수를 사용하여 삼중 주소 코드로 분할된다. 이 표현은 Laurie J. Hendren[63]이 McCAT 컴파일러[62]에서 제안한 SIMPLE 표현을 기반으로 하여 명령형 프로그램의 분석 및 최적화를 단순화했다.

GCC는 버전 4부터 중간 형식이 두 개 추가되었다. 먼저, 각 언어는 일반적으로 프론트엔드 언어의 트리 구조를 유지한 공통 중간 형식인 GENERIC으로 변환된 후 GIMPLE이라는 중간 형식에서 트리 최적화 SSA를 수행한 다음 RTL 최적화가 수행된다.

5. 3. 최적화

GCC는 컴파일의 모든 단계에서 최적화를 수행하지만, 대부분의 최적화는 프런트엔드의 구문 및 의미 분석 이후, 백엔드의 코드 생성 전에 수행된다. GCC는 루프 최적화, 점프 스레딩, 공통 부분식 제거, 명령어 스케줄링 등과 같은 표준 알고리즘을 포함하는 다양한 최적화 기법을 제공한다.[64] RTL 최적화는 GIMPLE 트리에 대한 전역 SSA 기반 최적화가 추가되면서 중요성이 줄어들었는데, 이는 RTL 최적화가 범위가 훨씬 제한적이고, 더 적은 고급 정보를 갖기 때문이다.

이 수준에서 수행되는 최적화는 데드 코드 제거, 부분 중복 제거, 전역 값 넘버링, 희소 조건 상수 전파, 집약체의 스칼라 대체 등을 포함한다. 자동 벡터화 및 자동 병렬화와 같은 배열 종속성 기반 최적화도 수행되며, 프로파일 유도 최적화도 가능하다.[65]

GCC는 고도의 최적화를 수행하지만, CPU 벤더나 RISC 워크스테이션 메이커가 제공하는 컴파일러에 비하면 뒤떨어지는 경우도 있다. 이는 멀티 아키텍처이기 때문에 기종에 의존하지 않는 최적화가 중심이 되어, 특정 CPU에 특화된 전용 컴파일러에 비해 다소 불리한 입장이기 때문이다.

2005년 4월에 릴리스된 GCC 4.0은 루프 최적화 개선이나 자동 벡터화 등 최적화 기구가 대폭 재검토되었다.[95] GCC 4.2에서는 버그 수정, 최적화 개선 외에, C, C++, 포트란에서 OpenMP를 지원하는 신기능이 추가되었고, GCC 4.3에서는 루프의 자동 병렬화에 의한 멀티스레드 처리가 가능하게 되는 등, 멀티프로세서 환경에서 애플리케이션의 성능을 대폭 향상시킬 수 있게 되었다.

2010년 4월에 릴리스된 GCC 4.5에서는 링크 시 최적화가 도입되어, 복수의 오브젝트 파일에 걸쳐 있는 프로그램에 대해 보다 효과적으로 최적화를 할 수 있게 되었다. 링크 시 최적화는 프로그램 전체 최적화를 개선하는 데 요구된다.[93]

1990년경의 GCC 1.x나 2.x는, 특히 MC680x0 계열에 대해 상용 컴파일러를 능가하는 최적화 품질을 자랑했다고 한다.[94]

6. 호환 IDE

리눅스 및 기타 운영 체제에서 사용되는 다양한 통합 개발 환경(IDE)에서 GCC를 지원한다. 다음은 GCC를 지원하는 IDE의 예이다.

7. 기타 기능


  • 링크 타임 최적화는 오브젝트 파일 경계를 넘어 링크된 바이너리를 직접 개선한다. 링크 타임 최적화는 오브젝트 파일에 포함된 일부 ''짐플(Gimple)'' 표현의 직렬화가 포함된 중간 파일에 의존한다. 이 파일은 소스 컴파일 동안 오브젝트 파일과 함께 생성된다. 각 소스 컴파일은 별도의 오브젝트 파일과 링크 타임 도우미 파일을 생성한다. 오브젝트 파일을 링크할 때 컴파일러가 다시 실행되고 도우미 파일을 사용하여 별도로 컴파일된 오브젝트 파일 간의 코드를 최적화한다.
  • 플러그인은 GCC 컴파일러를 직접 확장한다.[68] 플러그인을 사용하면 플러그인으로 로드된 외부 코드를 통해 스톡 컴파일러를 특정 요구 사항에 맞게 조정할 수 있다. 예를 들어 플러그인은 ''짐플(Gimple)'' 표현을 처리하는 미들 엔드 패스를 추가, 교체 또는 제거할 수도 있다.[69] 이미 여러 GCC 플러그인이 출시되었으며, 특히 다음과 같다.
  • libpython에 연결되고 컴파일러 내부에서 임의의 Python 스크립트를 호출할 수 있는 Python 플러그인. 목표는 Python으로 GCC 플러그인을 작성할 수 있도록 하는 것이다.
  • MELT 플러그인은 GCC를 확장하기 위한 고급 Lisp와 같은 언어를 제공한다.[70]
  • C++ 언어는 트랜잭션 메모리에 대한 활발한 제안을 가지고 있다. `-fgnu-tm`으로 컴파일할 때 GCC 6 이상에서 활성화할 수 있다.[7][72]
  • C++ 언어는 식별자에서 비 ASCII 유니코드 문자에 대한 지원이 필요하지만, 이 기능은 GCC 10부터 지원되었다. 문자열 리터럴의 기존 처리와 마찬가지로 소스 파일은 UTF-8로 인코딩된 것으로 간주된다. 이 기능은 C에서 선택 사항이지만, 이 변경 이후에도 사용할 수 있게 되었다.[73][74]
  • GNU C는 중첩 함수[75] 및 `typeof` 표현식을 포함하여 여러 비표준 기능을 사용하여 C 프로그래밍 언어를 확장한다.[76]

참조

[1] 웹사이트 GCC Releases https://gnu.org/soft[...] GNU Project 2020-07-24
[2] 웹사이트 GCC Coding Conventions - GNU Project https://gcc.gnu.org/[...] 2022-02-07
[3] Youtube Cutting Edge Toolchain (Latest Features in GCC/GLIBC) https://www.youtube.[...] Linux Foundation 2019-10-01
[4] 웹사이트 GCC Runtime Library Exception https://gnu.org/lice[...] 2020-07-24
[5] 간행물 GCC Rust https://github.com/R[...] Rust GCC 2023-06-04
[6] 웹사이트 Programming Languages Supported by GCC https://gcc.gnu.org/[...] GNU Project 2014-06-23
[7] 웹사이트 GCC 6 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2016-09-19
[8] 웹사이트 OpenACC - GCC Wiki https://gcc.gnu.org/[...] 2016-09-19
[9] 웹사이트 The LLVM Compiler Infrastructure Project https://llvm.org/Use[...] 2021-09-24
[10] 웹사이트 Apple's GPLv3 purge http://meta.ath0.com[...] 2021-01-12
[11] 웹사이트 Why Clang https://lists.freebs[...] 2021-01-12
[12] 웹사이트 August 29, 2007: FreeBSD Foundation Newsletter, August 29, 2007 http://www.freebsdfo[...] 2021-01-12
[13] 웹사이트 Installing GCC: Binaries - GNU Project - Free Software Foundation (FSF) https://gcc.gnu.org/[...] 2021-01-12
[14] 서적 The Definitive Guide to GCC https://books.google[...] Apress 2020-09-25
[15] 웹사이트 About the GNU Project https://www.gnu.org/[...] The GNU Project 2011-10-09
[16] 간행물 Gnu's Zoo https://www.gnu.org/[...] Free Software Foundation 2007-08-11
[17] 서적 The Definitive Guide to GCC https://books.google[...] Apress 2020-09-25
[18] 뉴스 GNU C compiler beta test release https://groups.googl[...] 2011-10-09
[19] 간행물 Using and Porting the GNU Compiler Collection (GCC) Free Software Foundation, Inc. 2015-06-18
[20] 서적 The Daemon, the Gnu and the Penguin Groklaw 2015-09-14
[21] 뉴스 Get ready for GNU software https://books.google[...]
[22] 간행물 A new compiler project to merge the existing GCC forks https://gcc.gnu.org/[...] 2012-05-25
[23] 웹사이트 The Short History of GCC development http://www.softpanor[...] 2021-01-24
[24] 웹사이트 History - GCC Wiki https://gcc.gnu.org/[...] 2020-09-28
[25] 웹사이트 GCC steering committee - GNU Project https://gcc.gnu.org/[...] 2016-07-25
[26] 웹사이트 'PATCH] Remove chill' https://gcc.gnu.org/[...] 2010-07-29
[27] 웹사이트 Chart of Fortran 2003 Features supported by GNU Fortran https://gcc.gnu.org/[...] GNU 2009-06-25
[28] 웹사이트 Chart of Fortran 2008 Features supported by GNU Fortran https://gcc.gnu.org/[...] GNU 2009-06-25
[29] 웹사이트 GCC 4.8 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2015-02-17
[30] 웹사이트 GCC 5 Release Series — Changes, New Features, and Fixes https://gcc.gnu.org/[...] 2022-01-13
[31] 웹사이트 GCC 8 Release Series — Changes, New Features, and Fixes https://gcc.gnu.org/[...] 2022-01-13
[32] 웹사이트 Symbian GCC Improvement Project http://www.inf.u-sze[...] 2007-11-08
[33] 웹사이트 Linux Board Support Packages http://www.freescale[...] 2021-01-24
[34] 웹사이트 setting up gcc as a cross-compiler http://ps2stuff.play[...] 2008-12-12
[35] 웹사이트 CompileFarm - GCC Wiki https://gcc.gnu.org/[...] 2016-09-19
[36] 웹사이트 sh4 g++ guide http://www.ngine.de/[...] 2008-12-12
[37] 웹사이트 Linux Information Project http://www.linfo.org[...] LINFO 2010-04-27
[38] 웹사이트 GCC 9 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2019-05-07
[39] 웹사이트 The D Language Front-End Finally Merged Into GCC 9 - Phoronix https://phoronix.com[...] 2021-01-19
[40] 웹사이트 GCC 13 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2023-06-23
[41] 웹사이트 GCC 13 to support Modula-2: Follow-up to Pascal lives on in FOSS form https://www.theregis[...] The Register 2022-12-19
[42] 웹사이트 GCC Front Ends https://gcc.gnu.org/[...] gnu.org 2011-11-25
[43] 웹사이트 GCC 5 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2015-04-23
[44] 웹사이트 GCC 7 Release Series https://gcc.gnu.org/[...] gnu.org 2018-03-20
[45] 웹사이트 C++ Standards Support in GCC https://gcc.gnu.org/[...] 2021-05-17
[46] 웹사이트 GCC UPC (GCC Unified Parallel C) http://www.gccupc.or[...] Intrepid Technology, Inc. 2009-03-11
[47] 웹사이트 GCC Front-End For Rust https://rust-gcc.git[...] 2023-01-06
[48] 웹사이트 GCC Front-End for Rust (Github) https://github.com/R[...] 2023-01-06
[49] 웹사이트 Open Source Security, Inc. Announces Funding of GCC Front-End for Rust https://opensrcsec.c[...] 2021-01-12
[50] 웹사이트 Security Features: Compile Time Buffer Checks (FORTIFY_SOURCE) http://fedoraproject[...] fedoraproject.org 2009-03-11
[51] 웹사이트 languages used to make GCC http://www.ohloh.net[...] 2008-09-14
[52] 웹사이트 GCC Internals https://gcc.gnu.org/[...] GCC.org 2010-03-01
[53] 웹사이트 Prerequisites for GCC - GNU Project https://gcc.gnu.org/[...] 2021-09-05
[54] 뉴스 GCC allows C++ – to some degree http://www.h-online.[...] The H 2010-06-09
[55] 웹사이트 Re: Efforts to attract more users? https://lists.gnu.or[...] 2021-09-24
[56] 웹사이트 GCC 4.8 Release Series: Changes, New Features, and Fixes https://gcc.gnu.org/[...] 2013-10-04
[57] 웹사이트 bootstrap: Update requirement to C++11. https://github.com/g[...] 2020-05-18
[58] 웹사이트 GCC 3.4 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2016-07-25
[59] 웹사이트 GCC 4.1 Release Series — Changes, New Features, and Fixes - GNU Project https://gcc.gnu.org/[...] 2016-07-25
[60] 웹사이트 GENERIC (GNU Compiler Collection (GCC) Internals) https://gcc.gnu.org/[...] 2016-07-25
[61] 웹사이트 GIMPLE (GNU Compiler Collection (GCC) Internals) https://gcc.gnu.org/[...] 2016-07-25
[62] 웹사이트 McCAT http://www-acaps.cs.[...] 2017-09-14
[63] 웹사이트 Laurie Hendren's Home Page http://www.sable.mcg[...] 2009-07-20
[64] 웹사이트 From Source to Binary: The Inner Workings of GCC http://www.redhat.co[...] 2004-12
[65] 웹사이트 Installing GCC: Building - GNU Project https://gcc.gnu.org/[...] 2016-07-25
[66] 웹사이트 The GNU C++ Library https://gcc.gnu.org/[...] GNU Project 2021-02-21
[67] 웹사이트 License https://gcc.gnu.org/[...] GNU Project 2021-02-21
[68] 웹사이트 Plugins https://gcc.gnu.org/[...] 2013-07-08
[69] 웹사이트 GCC plugins thru the MELT example http://gcc-melt.org/[...] 2014-04-10
[70] 웹사이트 About GCC MELT http://gcc-melt.org/ 2013-07-08
[71] 웹사이트 GCC unplugged [LWN.net] https://lwn.net/Arti[...] 2021-03-28
[72] 웹사이트 TransactionalMemory - GCC Wiki https://gcc.gnu.org/[...] 2016-09-19
[73] 웹사이트 Lewis Hyatt - [PATCH] wwwdocs: Document support for extended identifiers added to GCC https://gcc.gnu.org/[...] 2020-03-27
[74] 웹사이트 Recommendations for extended identifier characters for C and C++ http://www.open-std.[...] 2020-03-27
[75] 웹사이트 C Extensions (Using the GNU Compiler Collection (GCC)) https://gcc.gnu.org/[...] 2022-01-12
[76] 웹사이트 Typeof - Using the GNU Compiler Collection (GCC) https://gcc.gnu.org/[...] 2022-01-12
[77] 웹사이트 GCC 12 Release Criteria https://gcc.gnu.org/[...] 2022-10-26
[78] 웹사이트 Option Summary (Using the GNU Compiler Collection (GCC)) https://gcc.gnu.org/[...] 2020-08-21
[79] 웹사이트 Hexagon Project Wiki https://web.archive.[...] 2011-05-19
[80] 웹사이트 Google Code Archive - Long-term storage for Google Code Project Hosting. https://code.google.[...] 2021-09-24
[81] 웹사이트 The GNU Compiler for the Java Programming Language https://web.archive.[...] 2010-04-22
[82] 문서 graphing calculators#programming
[83] 웹사이트 Using the GNU Compiler Collection https://gcc.gnu.org/[...] 2019-11-05
[84] 웹사이트 GCC Runtime Exception https://www.gnu.org/[...] FSF 2014-04-10
[85] 웹사이트 GCC Releases https://www.gnu.org/[...] GNU Project 2024-01-08
[86] 웹사이트 Using the GNU Compiler Collection (GCC): G++ and GCC(Version 9.3) https://gcc.gnu.org/[...] 2020-03-18
[87] 웹사이트 Using the GNU Compiler Collection (GCC): G++ and GCC(Version 6.5) https://gcc.gnu.org/[...] 2020-03-18
[88] 뉴스 The initial egcs project announcement - GNU Project - Free Software Foundation (FSF) https://gcc.gnu.org/[...]
[89] 웹사이트 History - GCC Wiki https://gcc.gnu.org/[...]
[90] 웹사이트 GCC Releases - GNU Project https://gcc.gnu.org/[...] 2022-06-18
[91] 웹사이트 Linuxの強味 https://www.oreilly.[...]
[92] 뉴스 FreeBSD takes another step toward GPL escape https://www.techrepu[...] TechRepublic 2012-11-07
[93] 웹사이트 Linktime optimization in GCC, part 1 - brief history https://hubicka.blog[...] 2014-04-21
[94] 서적 Oh!X 1990-01 日本ソフトバンク
[95] 웹사이트 PGCC: The Pentium Compiler {{!}} Using the GNU Compiler Collection {{!}} InformIT https://www.informit[...] 2022-06-18
[96] 웹인용 GCC Releases https://gnu.org/soft[...] GNU Project 2020-07-24
[97] 뉴스 GCC allows C++ – to some degree http://www.h-online.[...] The H 2010-06-01
[98] 웹사이트 GCC Front Ends http://gcc.gnu.org/f[...] 2011-11-25
[99] 웹인용 gdc project on bitbucket http://bitbucket.org[...] 2010-07-03
[100] 웹인용 Fortran 2003 Features in GNU Fortran https://web.archive.[...] 2014-01-01
[101] 웹사이트 '[PATCH] Remove chill' http://gcc.gnu.org/m[...] 2010-07-29
[102] 웹인용 'GCC UPC (GCC Unified Parallel C) | http://www.gccupc.org/' https://web.archive.[...] http://www.gccupc.org/
[103] 웹인용 Hexagon Project Wiki https://web.archive.[...] 2014-01-01
[104] 웹인용 sx-gcc: port gcc to nec sx vector cpu http://code.google.c[...]
[105] 웹인용 The GNU Compiler for the Java Programming Language https://web.archive.[...] 2010-04-22
[106] 웹사이트 GCC Releases http://www.gnu.org/s[...] gnu.org 2014-03-26
[107] 웹사이트 GCC Development Plan http://www.gnu.org/s[...] gnu.org 2014-03-26
[108] 문서 Support added for the Go language.
[109] 문서 Fortran front end changed from g77 to gfortran.
[110] 문서 Added Ada compiler (gnat).
[111] 문서 CHILL compiler removed.
[112] 웹사이트 Downloading GCC https://web.archive.[...] gnu.org 2014-03-26
[113] 문서 Included front ends for C, C++, Objective C, CHILL, Fortran (g77), and Java (gcj).
[114] 문서 Added FORTRAN front end (g77). However, g77 was not included with releases 2.8.0 or 2.8.1.
[115] 문서 Supported C, C++, and Objective C. Prior to this the C++ compiler was released separately from the C compiler.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com